import { IAppOption } from "../../../../typings";
import { authLogin } from "../../../utils/api";

const app = getApp<IAppOption>()

Page({

    /**
     * 页面的初始数据
     */
    data: {
        userInfo: {},
        hasUserInfo: false,
        canIUseGetUserProfile: false,
        redirectUrl: ""
    },
  
    /**
     * 生命周期函数--监听页面加载
     */
    //GeneralCallbackResult
    onLoad(options: Record<string, string | undefined>) {
        // @ts-ignore
        if (wx.getUserProfile) {
            this.setData({
              canIUseGetUserProfile: true
            })
        }

        if(options.redirectUrl) {
            this.data.redirectUrl = options.redirectUrl
        }
    },
  
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
      
    },
  
    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },
  
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
      
    },
  
    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
      
    },
  
    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },
  
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage(_pts): WechatMiniprogram.Page.ICustomShareContent {
        return {}
    },
    getUserProfile(_: WechatMiniprogram.ControlTap) {
        // 推荐使用 wx.getUserProfile 获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
        // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
        wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
        success: (res) => {
            this.setUserInfo(res.userInfo)
        }
        })
    },
    getUserInfo(e: WechatMiniprogram.ButtonGetUserInfo) {
        // 不推荐使用 getUserInfo 获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
        this.setUserInfo(e.detail.userInfo)
    },
    // 设置userInfo
    setUserInfo(userInfo: WechatMiniprogram.UserInfo) {
        app.globalData.environment!.localUserInfo = userInfo
        let promise = authLogin({
            openid: app.globalData.environment!.openid,
            userinfo: userInfo
        })
        promise.then((response:any) => {
            app.globalData.environment!.userInfo = response.userinfo
            app.globalData.environment!.token = response.token
            // 过期时间7天
            let newDateTime = Date.parse(new Date().toString());
            let tokenExpTime = newDateTime / 1000 + 604800 - 86400;
            wx.setStorageSync("userInfo", response.userinfo)
            wx.setStorageSync("token", response.token)
            wx.setStorageSync("tokenExpTime", tokenExpTime)
            if(app.globalData.environment?.userInfo?.username == "" || app.globalData.environment?.userInfo?.username == undefined) {
                wx.reLaunch({
                    url: "/pages/user/register/index?redirectUrl=" + this.data.redirectUrl
                })
            } else {
                if(this.data.redirectUrl) {
                    let that = this;
                    wx.navigateTo({
                        url: this.data.redirectUrl,
                        fail: function() {
                            wx.switchTab({
                                url: that.data.redirectUrl
                            })
                        }
                    })
                } else {
                    wx.switchTab({
                        url: "/pages/user/index"
                    })
                }
            }
        }).catch((message:any) => {
            wx.showToast({
                title: message,
                icon: "error"
            })
        })
    }
  })
  
  // 解决无法重新声明块级范围变量的问题
  export {}